// PROGRAMA : IDCPC006
// BIBLIOTECA : PRODETR
// SISTEMA : INFORMACOES DE SEGURANCA PUBLICA - SISP
// CLIENTE : SEJUSP - SEC. DA JUSTICA E SEGURANCA PUBLICA
// INSTITUTO DE IDENTIFICACAO
// PROGRAMADOR : EDU/FM DATA: 30/06/92
// OBJETIVO : CONSULTA HISTORICO. OPCAO: 'CRH','CHN','CPH','CFH'
// ATUALIZACOES DATA
// PROGRAMA : IDCPC006 12/11/1997
// BIBLIOTECA : PRODETR
// PROGRAMADOR :
// OBJETIVO : ADAPTACAO PARA O SHOPPING DO CIDADAO (P200)
// : ALTERACAO DO CAMPO RG (N11) PARA (N13)
// OBS : ESTE PROGRAMA FOI REESTRUTURADO POR SOLON MIRANDA
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idcpc006A;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Idctc006;
import br.com.vti.sisp_sicrim.antigo.model.DidHistorico;
import br.com.vti.sisp_sicrim.antigo.model.Tablele;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.Sisgsisp;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Idcpc006 OBJETIVO : CONSULTA HISTORICO. OPCAO: 'CRH','CHN','CPH','CFH' *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/idcpc006")
public class Idcpc006 {
	// Views utilizadas
	DidHistorico vwDidhis = new DidHistorico();
	DidHistorico vwDidhis2 = new DidHistorico();
	// Telas/relatorios utilizados
	Idcpc006A idcpc006A;
	Idctc006 idctc006;
	// Includes utilizados
	Tablele tablele = new Tablele();
	// Areas globais / session
	Sisgsisp sisgsisp;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Idcpc006 idcpc006Anterior;
	String faseproc = "0";

	// CONTROLE PAGAMENTO TAXA RG
	private long numcpf = 0;
	private long numpro = 0;
	private String regA = "";

	private Idcpc006A preMapas() {
		idcpc006A = new Idcpc006A(true, sessao);
		idctc006 = new Idctc006(true, sessao);
		idcpc006A.setDataCorrente(UtilBean.inverteDataCorrente());
		// Par�grafo: inicio()
		return idcpc006A;
	}

	public Idcpc006(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Idcpc006A idcpc006A, Idctc006 idctc006) {
		try {
			main(idcpc006A, idctc006);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroSiscerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Idcpc006A pidcpc006A, Idctc006 pidctc006) throws Exception {
		if (pidcpc006A == null && pidctc006 == null) {
			primeiraVez = true;
			// idctc006 = new Idctc006 (primeiraVez);
			idcpc006A = preMapas();
			idcpc006A.setNavegar("../idcpc006/executar");
			result.include("idcpc006A", idcpc006A);
			sessao.setAtributo("IDCPC006", this);
			idcpc006A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pidcpc006A, pidctc006);
		}

		// DEFINE PRINTER(EFM = 1)
		if (pidcpc006A != null) {

			idcpc006A.receberTela(false, result);
		}

		// TELA CONSULTA HISTORICO
		if (pidctc006 != null) {
			idctc006.receberTela(false, result);
			if (!(idctc006.getOperacao().equals("CRH") || idctc006.getOperacao().equals("CFH") || idctc006.getOperacao().equals("CHN") || idctc006.getOperacao().equals("CPH"))) {
				praFora();
				return;
			}

		}

		if (!UtilBean.funcao.equals(UtilBean.ctt_processa)) {
			idcpc006A.enviarMensagem(null, "");
			idcpc006A.setNavegar("../idcpc006/executar");
			result.include("idcpc006A", idcpc006A);
			sessao.setAtributo("IDCPC006", this);
			idcpc006A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		}

		switch (idcpc006A.getOperacao()) {
		case "CRH": {
			zera();
			if (!idcpc006A.getChave().trim().equals("")) {
				vwDidhis2.consultaNumeroRg(Long.parseLong(UtilBean.subStr(regA, 0, 13)));
				// 180
				if (vwDidhis2.totalRegistros() == 0) {
					idcpc006A.enviarMensagem("operacao", "N�O ENCONTROU REGISTROS");
					break;
				}

			}
			// Par�grafo: crh()

			while (vwDidhis.leituraNumeroRgMaiorig(Long.parseLong(UtilBean.subStr(regA, 0, 13)))) {
				rotinaAll(pidctc006);
				break;
				/*
				 * if (!idctc006.getOperacao().equals("CRH")) { break; } if (!idctc006.getChave().trim().equals("")) { zera(); break; }
				 */
			}
			if (vwDidhis.registrosProcessados() == 0) {
				idcpc006A.enviarMensagem(null, "N�O ENCONTROU REGISTROS");
			}
			/*
			 * if (idctc006.getChave().trim().equals("")) { break; }
			 */
			break;
		}
		case "CHN": {
			if (!idcpc006A.getChave().trim().equals("")) {
				vwDidhis2.consultaNomeIdent(idcpc006A.getChave());
				if (vwDidhis2.totalRegistros() == 0) {
					idcpc006A.enviarMensagem("operacao", "N�O ENCONTROU REGISTROS");
					break;
				}

			}
			// Par�grafo: chn()

			while (vwDidhis.leituraNomeIdentMaiorig(idcpc006A.getChave())) {
				rotinaAll(pidctc006);
				break;
				/*
				 * if (!idctc006.getOperacao().equals("CHN")) { break; } if (!idctc006.getChave().trim().equals("")) { break; }
				 */
			}
			if (vwDidhis.registrosProcessados() == 0) {
				idcpc006A.enviarMensagem(null, "N�O ENCONTROU REGISTROS");
			}
			/*
			 * if (idctc006.getChave().trim().equals("")) { break; }
			 */
			break;
		}
		case "CPH": {
			zera();
			numpro = Long.parseLong(UtilBean.subStr(regA, 0, 13));
			if (!idcpc006A.getChave().trim().equals("")) {
				vwDidhis2.consultaNumeroProtocolo(numpro);
				if (vwDidhis2.totalRegistros() == 0) {
					idcpc006A.enviarMensagem("operacao", "N�O ENCONTROU REGISTROS");
					break;
				}

			}
			// Par�grafo: cph()

			while (vwDidhis.leituraNumeroProtocoloMaiorig(numpro)) {
				rotinaAll(pidctc006);
				break;
				/*
				 * if (!idctc006.getOperacao().equals("CPH")) { break; } if (!idctc006.getChave().trim().equals("")) { zera(); numpro = Long.parseLong(UtilBean.subStr(regA, 0, 13)); break; }
				 */
			}
			if (vwDidhis.registrosProcessados() == 0) {
				idcpc006A.enviarMensagem(null, "N�O ENCONTROU REGISTROS");
			}
			/*
			 * if (idctc006.getChave().trim().equals("")) { break; }
			 */
			break;
		}
		case "CFH": {
			zera();
			numcpf = Long.parseLong(UtilBean.subStr(regA, 0, 13));
			if (!idcpc006A.getChave().trim().equals("")) {
				vwDidhis2.consultaNumeroCpf(numcpf);
				if (vwDidhis2.totalRegistros() == 0) {
					idcpc006A.enviarMensagem("operacao", "N�O ENCONTROU REGISTROS");
					break;
				}

			}
			// Par�grafo: cfh()

			while (vwDidhis.leituraNumeroCpfMaiorig(numcpf)) {
				rotinaAll(pidctc006);
				/*
				 * if (!idctc006.getOperacao().equals("CFH")) { break; } if (!idctc006.getChave().trim().equals("")) { zera(); numcpf = Long.parseLong(UtilBean.subStr(regA, 0, 13)); break; }
				 */
			}
			if (vwDidhis.registrosProcessados() == 0) {
				idcpc006A.enviarMensagem(null, "N�O ENCONTROU REGISTROS");
			}
			if (idctc006.getChave().trim().equals("")) {
				break;
			}
			break;
		}
		default: {
			praFora();
		}
		}
		sessao.setAtributo("IDCPC006", this);
		result.include("idcpc006A", idcpc006A);
		if (!result.used()) {
			idcpc006A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		}
	}

	private void rotinaAll(Idctc006 pidctc006) throws Exception {
		idctc006.setDatatu(vwDidhis.getDataAtualizacao());
		idctc006.setDatatu((int) funcoes.sissd002(idctc006.getDatatu()));
		// INVERTE DATAS
		idctc006.setDatath(vwDidhis.getDataInclusao());
		idctc006.setDatath((int) funcoes.sissd002(idctc006.getDatath()));
		idctc006.setDatnas(vwDidhis.getDataNasc());
		idctc006.setDatnas((int) funcoes.sissd002(idctc006.getDatnas()));
		idctc006.setDatbai(vwDidhis.getDataBaixa());
		idctc006.setDatbai((int) funcoes.sissd002(idctc006.getDatbai()));
		if (vwDidhis.getNacionalidade() == 2) {

			idctc006.setNacion("ESTRANGEIRO");
		} else {

			idctc006.setNacion("BRASILEIRO");
		}
		tablele.pesq = UtilBean.moveSubstring(tablele.pesq, 0, 3, "N", 202);
		tablele.pesq = UtilBean.moveSubstring(tablele.pesq, 3, 12, "A", vwDidhis.getEstadoCivil());
		tablele.resp = funcoes.sisst001(202, vwDidhis.getEstadoCivil(), tablele.resp);
		// PESQUISA TABELA

		idctc006.setEstciv(tablele.resp);
		tablele.pesq = UtilBean.moveSubstring(tablele.pesq, 0, 3, "N", 207);
		tablele.pesq = UtilBean.moveSubstring(tablele.pesq, 3, 12, "N", vwDidhis.getNumeroPosto());
		tablele.resp = funcoes.sisst001(207, vwDidhis.getNumeroPosto(), tablele.resp);
		idctc006.setNumpos(tablele.resp);
		if (vwDidhis.getCodigoMotivoBaixa() > 0) {
			tablele.pesq = UtilBean.moveSubstring(tablele.pesq, 0, 3, "N", 210);
			tablele.pesq = UtilBean.moveSubstring(tablele.pesq, 3, 12, "A", vwDidhis.getCodigoMotivoBaixa());
			tablele.resp = funcoes.sisst001(210, vwDidhis.getCodigoMotivoBaixa(), tablele.resp);
			idctc006.setMotbxa(tablele.resp);
		}

		// if (!idctc006.getEnviada()) {
		result.include("idctc006", idctc006);
		sessao.setAtributo("IDCPC006", this);
		idctc006.enviarTela(false, result, getClass().getSimpleName().toUpperCase());
		return;
		// }
		// if (pidctc006 != null) {
		// idctc006.receberTela(false, result);
		// }

		// idctc006.setNumpos("");
		// idctc006.setEstciv("");
		// idctc006.setNacion("");
		// idctc006.setDatnas(0);
		// idctc006.setCodano("");
		// idctc006.setDatatu(0);
		// idctc006.setMotbxa("");
		// idctc006.setDatath(0);
		// idctc006.setDatbai(0);
	}

	private void praFora() {
		funcoes.sissm001(result, sessao);
	} // CHAMA PROGRAMA DE ACORDO COM OPERACAO

	private void zera() {
		regA = idcpc006A.getChave();
		regA = regA.replace(' ', '0');
	}

	private void restaurarEstados(Idcpc006A pidcpc006A, Idctc006 pidctc006) {
		this.idcpc006Anterior = (Idcpc006) sessao.getAtributo("IDCPC006");
		if (pidcpc006A != null) {
			idcpc006A = pidcpc006A;
		} else {
			idcpc006A = this.idcpc006Anterior.idcpc006A;
		}
		idcpc006A.setSessao(sessao);
		if (pidctc006 != null) {
			idctc006 = pidctc006;
		} else {
			idctc006 = this.idcpc006Anterior.idctc006;
		}
		idctc006.setSessao(sessao);
		this.faseproc = this.idcpc006Anterior.faseproc;
		this.vwDidhis = this.idcpc006Anterior.vwDidhis;
	}
}
